#define _CRT_SECURE_NO_WARNINGS 1




//喝汽水问题，1汽水1元，2个空瓶可以换1瓶汽水，20元可以喝多少瓶汽水
//#include <stdio.h>
//int main()
//{
//    int money = 0;
//    scanf("%d", &money);
//    int total = money;
//    int empty = money;
//    while (empty > 1)
//    {
//        total = total + empty / 2;
//        empty = empty / 2 + empty % 2;
//    }
//    printf("可以喝%d瓶汽水", total);
//    return 0;
//}



//打印菱形
//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	int j = 0;
//	//上一半
//
//	for (i = 0; i < 7; i++)
//	{
//		for (j = 0; j < 6-i; j++)
//		{
//			printf(" ");
//		}
//		for (j = 0; j < 2*i+1; j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//	//下一半
//	for (i = 0; i <6; i++)
//	{
//		for (j = 0; j < i+1 ; j++)
//		{
//			printf(" ");
//		}
//		for (j = 0; j < (5-i)*2+1; j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//return 0;
//}



//求出0～100000之间的所有“水仙花数”并输出。
//如:153＝1^3＋5^3＋3^3，则153是一个“水仙花数”。
//#include <stdio.h>
//#include <math.h>
//int main()
//{
//	for (int i = 0; i <= 100000; i++)
//	{
//		int count = 0;
//		int tmp = i;
//		while (tmp!=0)
//		{
//			count++;
//			tmp /= 10;
//		}
//		tmp = i;
//		int sum = 0;
//		while (tmp != 0)
//		{
//			sum += pow(tmp % 10, count);//pow(x,y)是x的y次方
//			tmp /= 10;
//		}
//		if (sum == i)
//		{
//			printf("%d\n", i);
//		}
//	}
//
//	return 0;
//}


//求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和，其中a是一个数字，
//例如：2 + 22 + 222 + 2222 + 22222
//#include <stdio.h>
//#include <math.h>
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	int Sn = 0;
//	int sum = 0;
//	int n = 0;
//	int num = 0;
//	
//	for (n = 0; n <5; n++)
//	{
//		num = a * pow(10, n);
//		sum += num;
//		Sn += sum;
//	}
//	printf("%d", Sn);
//
//
//	return 0;
//}



//计算斐波那契数
//递归和非递归分别实现求第n个斐波那契数

//输入：5  输出：5
//输入：10， 输出：55
//输入：2， 输出：1

//#include <stdio.h>
//int Fib(int n)
//{
//	if (n <= 2)
//		return 1;
//	else
//		return Fib(n-1) + Fib(n - 2);
//}
//
//int main()
//{	
//	int n = 0;
//	scanf("%d", &n);
//	int r = Fib(n);
//	printf("%d\n", r);
//	return 0;
//}



//非递归
//#include <stdio.h>
//int Fib(int n)
//{
//	int a = 1;
//	int b = 1;
//	int c = 0;
//	while (n >= 3)
//	{
//		c = a + b;
//		a = b;		
//		b = c;
//		n--;
//	}
//
//	return c;
//}
//
//int main()
//{	
//	int n = 0;
//	scanf("%d", &n);
//	int r = Fib(n);
//	printf("%d\n", r);
//	return 0;
//}


//递归实现n的k次方
//编写一个函数实现n的k次方，使用递归实现。

//#include <stdio.h>
//int Func(int n,int k)
//{
//	if (k == 1)
//	{
//		return n;
//	}
//	return n * Func(n, k - 1);
//}
//
//
//int main()
//{
//	int ret=Func(2, 3);
//	printf("%d\n", ret);
//	return 0;
//}



//计算一个数的每位之和（递归实现）
//写一个递归函数DigitSum(n)，输入一个非负整数，返回组成它的数字之和

//例如，调用DigitSum(1729)，则应该返回1 + 7 + 2 + 9，它的和是19  输入：1729，输出：19

//#include <stdio.h>
//int Func1(int n)
//{
//	if (n < 10)
//	{
//		return n;
//	}
//	return n % 10 + Func1(n / 10);
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	Func1(n);
//	int ret = n % 10 + Func1(n / 10);
//	printf("%d", ret);
//	return 0;
//}



//递归和非递归分别实现求n的阶乘

//#include <stdio.h>
//int Func4(int n)
//{
//	if (n == 0)
//		return 1;
//	else
//		return n * Func4(n - 1);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret=Func4(n);
//	printf("%d", ret);
//	return 0;
//}

//非递归
//#include <stdio.h>
//int main()
//{
//
//	int n = 0;
//	scanf("%d", &n);
//	int ret = 1;
//	for (int i = 1; i<=n; i++)
//	{
//		ret *= i;
//	}
//	printf("%d", ret);
//	return 0;
//}




//递归方式实现打印一个整数的每一位
//#include <stdio.h>
//void  Func2(int n)
//{
//	if (n < 10)
//	{
//		printf("%d ", n);
//		return ;
//	}
//	Func2(n / 10);
//	printf("%d ", n % 10 );
//
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	Func2(n);
//	return 0;
//}